//
//  TKIMNotifyDBProtocol.h
//  TKIM_标准版
//
//  Created by liupm on 16/3/14.
//  Copyright © 2016年 liupm. All rights reserved.
//
@protocol TKIMNotifyDBProtocol <NSObject>

@optional
/**
 *  @Author lpm, 16-10-11 09:10:26
 *
 *  @brief  缓存一条通知数据
 *
 *  @param notify 通知
 */
-(void)insertNotify:(TKIMNotify *)notify;


/**
 *  @Author lpm, 15-10-29 15:10:25
 *
 *  @brief  查询未处理的通知数据
 *
 */
-(NSMutableArray *)queryPendingNotify;


/**
 *  @Author lpm, 16-10-11 09:10:53
 *
 *  @brief  查询指定类型和状态的通知数据
 *
 *  @param type  通知类型
 *  @param state 通知状态
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyByType:(TKIMNotifyType)type state:(TKIMNotifyState)state;


/**
 *  @Author lpm, 16-10-11 09:10:53
 *
 *  @brief  查询不是指定类型的某种状态的通知数据
 *
 *  @param type  通知类型
 *  @param state 通知状态
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyNotType:(TKIMNotifyType)type state:(TKIMNotifyState)state;


/**
 *  @Author lpm, 15-10-29 15:10:46
 *
 *  @brief  更新一条通知数据
 *
 *  @param notify 通知
 */
-(void)updateNotify:(TKIMNotify *)notify;


/**
 *  @Author lpm, 16-10-11 09:10:15
 *
 *  @brief  缓存多条通知数据
 *
 *  @param notifys 通知数组
 */
-(void)insertNotifys:(NSMutableArray *)notifys;


/**
 *  @Author lpm, 15-10-29 15:10:45
 *
 *  @brief  删除一条通知数据
 *
 *  @param notify  通知
 */
-(void)removeNotify:(TKIMNotify *)notify;


/**
 *  @Author lpm, 15-10-29 15:10:45
 *
 *  @brief  删除多条通知数据
 *
 *  @param notifys 通知数组
 */
-(void)removeNotifys:(NSMutableArray *)notifys;


/**
 *  @Author lpm, 15-10-29 15:10:46
 *
 *  @brief  更新多条通知数据
 *
 *  @param notifys  通知数组
 */
-(void)updateNotifys:(NSMutableArray *)notifys;


/**
 *  @Author lpm, 15-10-29 15:10:25
 *
 *  @brief  根据通知ID查询多条通知数据
 *
 *  @param notifyId 通知ID
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyBy:(NSString *)notifyId;


/**
 *  @Author lpm, 15-10-29 15:10:25
 *
 *  @brief  查询所有通知数据
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotify;


/**
 *  @Author lpm, 15-10-29 15:10:25
 *
 *  @brief  查询指定条数的通知数据
 *
 *  @param count 条数(-1 查所有)
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotify:(NSInteger)count;


/**
 *  @Author lpm, 15-10-29 15:10:25
 *
 *  @brief  查询不是某种类型指定条数的通知数据
 *
 *  @param types 类型
 *  @param count 条数(-1 查所有)
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyNotType:(TKIMNotifyType)type count:(NSInteger)count;


/**
 *  @Author lpm, 16-05-03 09:05:15
 *
 *  @brief  查询不是某种类型指定条数的通知数据
 *
 *  @param type  类型
 *  @param state 状态
 *  @param count 条数(-1 查所有)
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyNotType:(TKIMNotifyType)type state:(TKIMNotifyState)state count:(NSInteger)count;


/**
 *  @Author lpm, 16-05-03 09:05:43
 *
 *  @brief  查询不是某些类型指定条数的通知数据
 *
 *  @param types 类型数组
 *  @param count 条数(-1 查所有)
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyNotInTypes:(NSArray *)types  count:(NSInteger)count;


/**
 *  @Author lpm, 16-05-03 09:05:43
 *
 *  @brief  查询某些类型指定条数的通知数据
 *
 *  @param types 类型数组
 *  @param count 条数(-1 查所有)
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyInTypes:(NSArray *)types  count:(NSInteger)count;


/**
 *  @Author lpm, 16-05-03 09:05:43
 *
 *  @brief  查询不是某些类型指定条数的通知数据
 *
 *  @param types 类型数组
 *  @param count 条数(-1 查所有)
 *
 *  @return 通知数组
 */
-(NSMutableArray *)queryNotifyNotInTypes:(NSArray *)types state:(TKIMNotifyState)state count:(NSInteger)count;


/**
 *  @Author lpm, 15-11-04 15:11:03
 *
 *  @brief  清空通知数据
 */
-(void)clearNotify;


@end